<?php
/*
 * @Author: your name
 * @Date: 2020-12-23 12:01:16
 * @LastEditTime: 2020-12-31 17:10:07
 * @LastEditors: Please set LastEditors
 * @Description: In User Settings Edit
 * @FilePath: /special/application/common/model/access_log/AccessLogBaseModel.php
 */

namespace app\common\model\access_log;


use app\common\model\depots\DepotsBaseModel;

abstract class AccessLogBaseModel extends DepotsBaseModel
{
    //此表的子数据库的标识的固定前缀
    protected $databaseKeyPrefix = 'access_log_database';

    //此表的子数据库的名称的固定前缀,动态创建数据库时使用
    protected $databaseNamePrefix = 'ahsmpv3_access_log';

    /**
     * 创建访问日志数据表
     * @param int $hostId 主机id
     */
    public function createTable($hostId){
        //设置表名及库名
        $this->setHostId($hostId);
        $sql = <<<EOF
                  CREATE TABLE IF NOT EXISTS `{$this->table}` (
                      `id` bigint(100) unsigned NOT NULL AUTO_INCREMENT,
                      `host_id` int(11) NOT NULL COMMENT '主机id',
                      `source_ip` varchar(15) NOT NULL COMMENT '源ip',
                      `target_ip` varchar(15) NOT NULL COMMENT '目标ip',
                      `direction` int(11) NOT NULL COMMENT '流量方向 1出站 2进站',
                      `target_port` int(11) NOT NULL COMMENT '目标端口',
                      `protocols` int(11) NOT NULL COMMENT '协议 6 tcp 17 udp',
                      `permission` tinyint(1) NOT NULL COMMENT '是否授权访问 0未授权 1授权',
                      `first_time` int(11) NOT NULL COMMENT '首次访问时间',
                      `last_time` int(11) NOT NULL COMMENT '最后访问时间',
                      `ignore` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否忽略 0不忽略 1忽略',
                      `guise` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否忽略 0非伪装端口 1伪装端口',
                      `view_all` bigint(20) NOT NULL DEFAULT '0' COMMENT '访问总数',
                      `syslog` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否上传syslog',
                      `elk` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否上传elk',
                      PRIMARY KEY (`id`),
                      UNIQUE KEY `log_one` (`host_id`,`source_ip`,`target_ip`,`target_port`,`protocols`) USING BTREE
                  ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
EOF;
        //这里必须使用模型,与默认数据库连接不一样
        $result = $this->execute($sql);
        if($result === false){
            return false;
        }else{
            return true;
        }
    }
}